#ifndef CLASEMASINI_H
#define CLASEMASINI_H
#include<iostream>
#include<stdio.h>  
 

using namespace std;

class Car {
 protected: 
    char culoare[20];
	char transmisie[20];

  public:
   virtual void PrintCar() = 0;
   char *GetCuloare() { return this->culoare; }
   char *GetTransmisie() { return this->transmisie; }
   void SetCuloare(char *cul) { strcpy(this->culoare, cul); }
   void SetTransmisie(char *trans) { strcpy(this->transmisie, trans); }
   
};


//Abstract factory
class CarFactory
{ 
public: Car* GetCar(char *tip);
};


// clase concrete
class Sedan: public Car
{
   private:
     float dimensiune;

   public:
	 Sedan();   
	 void PrintCar();  
	 float GetDimensiune() { return this->dimensiune;}

};

class Coupe: public Car
{
	private:
	  char dotari[40];
	  
    public:
      Coupe();
	  void PrintCar();
	  char* GetDotari(Coupe CoupeCar) { return CoupeCar.dotari; }
};

class Mini: public Car 
{
    private:
	  char motorizare[30];
	  
	public:  
	  Mini();
	  void PrintCar();
	  char* GetMotorizare(Mini MiniCar) { return MiniCar.motorizare; }
};

#endif